package cc.linker.steplink.crm.service;

import cc.linker.steplink.crm.domain.AuthorTask;
import cc.linker.steplink.crm.domain.Precise;
import cc.linker.steplink.crm.merchant.pojo.PersonGroupDTO;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;

public interface IPreciseService {
    List<Map<String, Object>> listPrecise(Map<String, Object> map) throws Exception;

    Boolean delPrecise(String taskId) throws Exception;

    void addPrecise(Precise precise) throws Exception;

    void updatePrecise(Precise precise) throws Exception;

    Map<String, Object> getPrecise(String taskId) throws Exception;

    Boolean addWxPrecise(Map param) throws Exception;

    Boolean updateWxPush(Map param) throws Exception;

    Map<String, Object> getInfo(String taskId);

    Integer getTouchNum(String taskId) throws IOException, URISyntaxException;

    //【千人计划】推送报告
    Map<String,Object> getSendReport(String taskId);

    //【千人计划】创建分组
    void createGroup(PersonGroupDTO groupDTO);

    //获取分组列表
    List<Map<String,Object>>getGroupList();

    //【千人计划】添加分组人员绑定关系 @parmas 筛选条件
    List<Map<String,Object>> getAuthList(Map<String,Object> params);

    //【千人计划】获取task任务列表
    List<AuthorTask> getTaskList();


    //【千人计划】根据任务idh获取
   List<String> getIdsListByGroupIds(List<String> list);


    //【千人计划】获取任务统计数据
    Map<String, Object> getPushResultByTaskId(String taskId);

    //【千人计划】获取任务详情
    Map<String, Object> getTaskInfo(String taskId);

    //【千人计划】根据分组id查找人员的 邮箱列表
    List<String> getAuthorEmailsListByGroupId(String groupId);

    //【千人计划】添加到任务列表
    void addPreciseToDemoTask(AuthorTask authorTask, HttpServletRequest request) throws ExecutionException, InterruptedException;




}
